package com.china08.yxyapi.entity.mg.homework;

import java.time.LocalDate;
import java.util.List;

import javax.persistence.Id;

import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

import com.china08.yxyapi.entity.mg.MongoBaseEntityNoId;
import com.china08.yxyapi.entity.mg.homework.HomeworkTaskQues.Article;

/**
 * 作业:任务:报告:每个学生答一道题时更新或新增一条记录
 * 
 * @author Richard Wang
 *
 */
@SuppressWarnings("serial")
@Document(collection = "yxy.tea.homework.task.report.ques")
public class HomeworkTaskReportQues extends MongoBaseEntityNoId {

    /** 主键 */
    @Id
    private String id;

    /** 任务:ID */
    @Indexed
    @Field(value = "task_id")
    private String taskId;

    /**
     * 任务名称
     */
    @Indexed
    @Field(value = "task_name")
    private String title;

    /** 报告:ID */
    @Indexed
    @Field(value = "report_id")
    private String reportId;

    /** 发布用户:ID 在错题本中，查询需要根据教师id，查询错题， */
    @Indexed
    @Field(value = "publish_user_id")
    private String publishUserId;

    /** 发布用户名称 */
    @Field(value = "publish_user_nick")
    private String publishUserNick;

    /**
     * 学校id
     */
    @Field(value = "school_id")
    private String schoolId;

    /** 学生:ID */
    @Indexed
    @Field(value = "student_id")
    private String studentId;

    /** 学生:姓名 */
    @Field(value = "student_name")
    private String studentName;

    /**
     * 班级id
     */
    @Field(value = "class_id")
    private String classId;

    /** 学段 */
    @Field(value = "stage")
    private String stage;

    /** 学科 */
    @Field(value = "subject")
    private String subject;

    /** 试题:ID */
    @Indexed
    @Field(value = "ques_id")
    private String quesId;

    /**
     * 试题类型，使用题库中的的类型 （0--单选择题，1--多选择题，2--通知类，3--填空，4--问答,5--阅读）</br>
     * 2017.08.23 王慧超,增加 5类型:阅读类题型"
     */
    @Field(value = "question_type")
    private String questionType;

    /**
     * 通知类作业，上传的文档,需要存储文档地址，文档的名称</br>
     * 2017.08.23 王慧超</br>
     * 通知类,阅读类的附件都使用此字段存储,对象中增加一个阅读时长的描述
     */
    @Field(value = "ques_article")
    private List<Article> quesArticle;

    /** 知识点:ID */
    @Indexed
    @Field(value = "know_id")
    private List<Integer> knowIdLst;

    /** 知识点:Name */
    @Field(value = "know_name")
    private List<String> knowNameLst;

    /** 勾选错误知识点:ID */
    @Indexed
    @Field(value = "wrong_know_id")
    private List<Integer> wrongKnowIdLst;

    /** 勾选错误知识点:Name */
    @Field(value = "wrong_know_name")
    private List<String> wrongKnowNameLst;

    /** 勾选正确知识点:ID */
    @Indexed
    @Field(value = "exactness_know_id")
    private List<Integer> exactnessKnowIdLst;

    /** 勾选正确知识点:Name */
    @Field(value = "exactness_know_name")
    private List<String> exactnessKnowNameLst;

    /** 难度系数 */
    @Field(value = "difficulty_xs")
    private Float difficultyXs = 1.0f;

    /** 难度级别:1-易,2-中,3-难 */
    @Field(value = "difficulty_level")
    private Integer difficultyLevel = 1;

    /**
     * 做题时长,秒, 此做题时长,不适用于"阅读类作业"
     */
    @Field(value = "duration")
    private Integer duration = 1;

    /**
     * 主观题, 通知类回答 题目的回答
     */
    @Field(value = "answer_text")
    private String answerText;

    /**
     * 主观题, 通知类回答 上传的图片
     */
    @Field(value = "answer_imgs")
    private List<String> answerImgs;

    /**
     * 答案:我的 ；选择题回答的答案 <br/>
     * 多选题，使用A，B 存储
     */
    @Field(value = "answer_of_my")
    private String answerOfMy;

    /** 答案:题的 */
    @Field(value = "answer_of_ques")
    private String answerOfQues;

    /** 是否正确 0-错误 , 1-正确 （单选，多选） */
    @Field(value = "passed")
    private Integer passed;

    /** （通知类，填空，问答，阅读）评分  5,4,3,2,1 */
    @Field(value = "mark")
    private Integer mark;

    /** 通知类作业是否正确 1-A, 2-B, 3-C, 4-D */
    @Deprecated
    @Field(value = "notify_passed")
    private Integer notifyPassed;

    /**
     * 学生点击删除，将此题在错题本中不显示。 (0:已删除;1:未删除)(只针对错题)
     */
    @Field(value = "is_view")
    private Integer isView = 1;

    /** 做题时间 */
    @Field(value = "date")
    private LocalDate date;

    /** 任务中题的序号 */
    @Field(value = "order")
    private Integer order;

    /**
     * 当此数据发生变化时, 将此状态更改为 0, total表进行统计之后, 将此字段更新为1,已经同步 </br>
     * 0:未同步 1:已同步
     */
    @Field(value = "synch_tea_mistakes")
    private Integer synchTeaMistakes;

    /**
     * 
     */
    @Field(value = "synch_stu_mistakes")
    private Integer synchStuMistakes;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getTaskId() {
        return taskId;
    }

    public void setTaskId(String taskId) {
        this.taskId = taskId;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getReportId() {
        return reportId;
    }

    public void setReportId(String reportId) {
        this.reportId = reportId;
    }

    public String getPublishUserId() {
        return publishUserId;
    }

    public void setPublishUserId(String publishUserId) {
        this.publishUserId = publishUserId;
    }

    public String getSchoolId() {
        return schoolId;
    }

    public void setSchoolId(String schoolId) {
        this.schoolId = schoolId;
    }

    public String getStudentId() {
        return studentId;
    }

    public void setStudentId(String studentId) {
        this.studentId = studentId;
    }

    public String getStudentName() {
        return studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    public String getClassId() {
        return classId;
    }

    public void setClassId(String classId) {
        this.classId = classId;
    }

    public String getStage() {
        return stage;
    }

    public void setStage(String stage) {
        this.stage = stage;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getQuesId() {
        return quesId;
    }

    public void setQuesId(String quesId) {
        this.quesId = quesId;
    }

    public String getQuestionType() {
        return questionType;
    }

    public void setQuestionType(String questionType) {
        this.questionType = questionType;
    }

    public List<Integer> getKnowIdLst() {
        return knowIdLst;
    }

    public void setKnowIdLst(List<Integer> knowIdLst) {
        this.knowIdLst = knowIdLst;
    }

    public List<String> getKnowNameLst() {
        return knowNameLst;
    }

    public void setKnowNameLst(List<String> knowNameLst) {
        this.knowNameLst = knowNameLst;
    }

    public Float getDifficultyXs() {
        return difficultyXs;
    }

    public String getPublishUserNick() {
        return publishUserNick;
    }

    public void setPublishUserNick(String publishUserNick) {
        this.publishUserNick = publishUserNick;
    }

    public Integer getDuration() {
        return duration;
    }

    public void setDuration(Integer duration) {
        this.duration = duration;
    }

    public void setDifficultyXs(Float difficultyXs) {
        this.difficultyXs = difficultyXs;
    }

    public Integer getDifficultyLevel() {
        return difficultyLevel;
    }

    public void setDifficultyLevel(Integer difficultyLevel) {
        this.difficultyLevel = difficultyLevel;
    }

    public String getAnswerText() {
        return answerText;
    }

    public void setAnswerText(String answerText) {
        this.answerText = answerText;
    }

    public String getAnswerOfMy() {
        return answerOfMy;
    }

    public void setAnswerOfMy(String answerOfMy) {
        this.answerOfMy = answerOfMy;
    }

    public String getAnswerOfQues() {
        return answerOfQues;
    }

    public void setAnswerOfQues(String answerOfQues) {
        this.answerOfQues = answerOfQues;
    }

    public Integer getPassed() {
        return passed;
    }

    public void setPassed(Integer passed) {
        this.passed = passed;
    }

    public Integer getIsView() {
        return isView;
    }

    public void setIsView(Integer isView) {
        this.isView = isView;
    }

    public LocalDate getDate() {
        return date;
    }

    public void setDate(LocalDate date) {
        this.date = date;
    }

    public Integer getOrder() {
        return order;
    }

    public void setOrder(Integer order) {
        this.order = order;
    }

    @Deprecated
    public Integer getNotifyPassed() {
        return notifyPassed;
    }

    @Deprecated
    public void setNotifyPassed(Integer notifyPassed) {
        this.notifyPassed = notifyPassed;
    }

    public List<String> getAnswerImgs() {
        return answerImgs;
    }

    public void setAnswerImgs(List<String> answerImgs) {
        this.answerImgs = answerImgs;
    }

    public Integer getMark() {
        return mark;
    }

    public void setMark(Integer mark) {
        this.mark = mark;
    }

    public List<Integer> getWrongKnowIdLst() {
        return wrongKnowIdLst;
    }

    public List<String> getWrongKnowNameLst() {
        return wrongKnowNameLst;
    }

    public List<Integer> getExactnessKnowIdLst() {
        return exactnessKnowIdLst;
    }

    public List<String> getExactnessKnowNameLst() {
        return exactnessKnowNameLst;
    }

    public void setWrongKnowIdLst(List<Integer> wrongKnowIdLst) {
        this.wrongKnowIdLst = wrongKnowIdLst;
    }

    public void setWrongKnowNameLst(List<String> wrongKnowNameLst) {
        this.wrongKnowNameLst = wrongKnowNameLst;
    }

    public void setExactnessKnowIdLst(List<Integer> exactnessKnowIdLst) {
        this.exactnessKnowIdLst = exactnessKnowIdLst;
    }

    public void setExactnessKnowNameLst(List<String> exactnessKnowNameLst) {
        this.exactnessKnowNameLst = exactnessKnowNameLst;
    }

    public Integer getSynchTeaMistakes() {
        return synchTeaMistakes;
    }

    public void setSynchTeaMistakes(Integer synchTeaMistakes) {
        this.synchTeaMistakes = synchTeaMistakes;
    }

    public Integer getSynchStuMistakes() {
        return synchStuMistakes;
    }

    public void setSynchStuMistakes(Integer synchStuMistakes) {
        this.synchStuMistakes = synchStuMistakes;
    }

    public List<Article> getQuesArticle() {
        return quesArticle;
    }

    public void setQuesArticle(List<Article> quesArticle) {
        this.quesArticle = quesArticle;
    }

}
